home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1993…ch: Other People's Memory / ADC Developer CD (1993-03) (''Other People's Memory'')_iso / Dev.CD Mar 93.iso / Development Platforms / CSMP Digests / csmp-v1-026.txt < prev    next >
Encoding:
Text File  |  1992-11-18  |  42.8 KB  |  1,124 lines  |  [TEXT/MPS ]

  1. C.S.M.P. Digest             Sat, 21 Mar 92       Volume 1 : Issue 26
  2.  
  3. Today's Topics:
  4.  
  5.     HELP: hum noise when Mac is connected to an AMP
  6.     System 7's pop-up CDEF - more lies (documentation errors)
  7.     Another note regarding 'odoc' conversion to "puppet strings"
  8.     implementing preference files
  9.  
  10.  
  11. The Comp.Sys.Mac.Programmer Digest is moderated by Michael A. Kelly.
  12.  
  13. These digests are available (by using FTP, account anonymous, your email
  14. address as password) in the pub/mac/csmp-digest directory on ftp.cs.uoregon.
  15. edu (try skinner.cs.uoregon.edu if that doesn't work).  This is also the home
  16. of the comp.sys.mac.programmer Frequently Asked Questions list.
  17.  
  18. These digests are also available via email.  Just send a note saying that you
  19. want to be on the digest mailing list to mkelly@cs.uoregon.edu, and you will
  20. automatically receive each new digest as it is created.
  21.  
  22. The articles in these digests are taken directly from comp.sys.mac.programmer.
  23. They are not edited; all articles included in this digest are in their original
  24. posted form.  The only articles that are -not- included in these digests are
  25. those which didn't receive any replies (except those that give information
  26. rather than ask a question).  All replies to each article are concatenated
  27. onto the original article in the order in which they were received.  Article
  28. threads are not added to the digests until the last article added to the
  29. thread is at least one month old (this is to ensure that the thread is dead
  30. before adding it to the digests).
  31.  
  32. Send administrative mail to mkelly@cs.uoregon.edu.
  33.  
  34. -------------------------------------------------------
  35.  
  36. From: rleung@engws2.ic.sunysb.edu (Ross H Leung)
  37. Subject: HELP: hum noise when Mac is connected to an AMP
  38. Date: 14 Feb 92 05:46:44 GMT
  39. Organization: State University of New York at Stony Brook
  40.  
  41. I am hooking my Macintosh to an Amplifier and get a lot of noise even
  42. when I'm not playing anything through the Macintosh sound port.  It
  43. is an annoying hum interference.  It has something dealing with the
  44. grounding signal?!?  If anyone could help me, I appreciate it!
  45.  
  46. Please send mail to:
  47. RLEUNG @ ic.sunysb.edu
  48.  
  49. Ross Leung
  50. Instructional Computing
  51. University at Stony Brook, NY
  52.  
  53.  
  54.  
  55. - -------------------------
  56.  
  57. From: emmayche@msgate.corp.apple.com (Mark Hartman)
  58. Subject:  HELP: hum noise when Mac is connected to an AMP
  59. Date: 19 Feb 92 18:01:52 GMT
  60. Organization: Organization?  Who's organized?
  61.  
  62. The following question should probably go on the FAQL:
  63.  
  64. In article <1992Feb14.054644.2549@sbcs.sunysb.edu>,
  65. rleung@engws2.ic.sunysb.edu (Ross H Leung) writes:
  66. > I am hooking my Macintosh to an Amplifier and get a lot of noise even
  67. > when I'm not playing anything through the Macintosh sound port.  It
  68. > is an annoying hum interference.  It has something dealing with the
  69. > grounding signal?!?  If anyone could help me, I appreciate it!
  70. > Ross Leung
  71.  
  72. As you have surmised, Ross, you have a grounding problem.  The problem is
  73. that different transformers supply different DC ground potentials, and you
  74. have two there (one in the Mac and one in the amp).
  75.  
  76. The solution is to use a third transformer in the audio circuit which will
  77. isolate the grounds from the Mac and amplifier.  Any stereo store should be
  78. able to help you for something under $20.  Ask for an "isolation transformer";
  79. if they look blank, tell them you want "the box that gets rid of the hum,";
  80. if they still look blank, get someone else to help you.
  81.  
  82. Mark Hartman
  83. emmayche@msgate.corp.apple.com
  84.  
  85.  
  86.  
  87. ---------------------------
  88.  
  89. From: engber@ils.nwu.edu (Mike Engber)
  90. Subject: System 7's pop-up CDEF - more lies (documentation errors)
  91. Date: 14 Feb 92 14:25:23 GMT
  92. Organization: The Institute for the Learning Sciences
  93.  
  94.  
  95. IM VI p. 3-18
  96.  
  97.  - The System 7 pop-up CDEF says the if you set useWFont, then the menu
  98.    will appear in the current font and size. It does use the current
  99.    font, but not the current size. The title and current item do use the
  100.    current size.
  101.  
  102.  - To double check, I looked at a ComToolBox app (uATerm) and sure enough,
  103.    those Geneva 9 pop-ups, pop into Geveva 12 menus.
  104.  
  105.  - Also, the standard MDEF only uses the system font and there is only one
  106.    MDEF in the System 7 system file.
  107.  
  108. So how do they do it?
  109.  
  110.  - My guess is what's going on is that it briefly changes two global
  111.    vars, SysFontFam and SysFontSize, to trick the standard MDEF into
  112.    using the font it wants.
  113.  
  114.  - I tried this out, and you have to change both vars to get it to work
  115.    at all & for some reason, the setting of SysFontSize seems ignored (12
  116.    is always used)
  117.  
  118. Comments anyone? How evil a technique is this?
  119.  
  120.  You see, I'm still on my quest for a CDEF that implements type in pop
  121.  up menus as per IM VI. I got no response to my posting that pointed
  122.  out that IM VI falsely claims the standard pop-up CDEF will "readily"
  123.  do it.  So I'm writing my own.
  124.  
  125.  I'm almost done, the one thing to figure out is how to support support
  126.  (or not) the useWFont var code. (and I know the real answer is to
  127.  write my own MDEF - but I can always point to Apple and say "monkey
  128.  see, monkey do."
  129.  
  130.  It's tempting to use this global var technique (size bug and all) rather
  131.  than have to couple my CDEF with an MDEF. 
  132.  
  133.  I'll make the CDEF avail when it's done.
  134.  
  135.  Please cc via email if possible.
  136.  
  137. -ME
  138.  
  139.  
  140.  
  141. - -------------------------
  142.  
  143. From: resnick@cogsci.uiuc.edu (Pete Resnick)
  144. Subject:  System 7's pop-up CDEF - more lies (documentation errors)
  145. Date: 14 Feb 92 19:26:51 GMT
  146. Organization: University of Illinois at Urbana
  147.  
  148. engber@ils.nwu.edu (Mike Engber) writes:
  149.  
  150. >So how do they do it?
  151.  
  152. > - My guess is what's going on is that it briefly changes two global
  153. >   vars, SysFontFam and SysFontSize, to trick the standard MDEF into
  154. >   using the font it wants.
  155.  
  156. > - I tried this out, and you have to change both vars to get it to work
  157. >   at all & for some reason, the setting of SysFontSize seems ignored (12
  158. >   is always used)
  159.  
  160. >Comments anyone? How evil a technique is this?
  161.  
  162. That is exactly what Apple does (along with changing 1 or two other
  163. low-memory globals), and it does *usually* work as documented.
  164. Unfortunately, some programs, especially MacWrite II, screw this up and
  165. cause the point size to be ignored. I have reported this bug to Claris.
  166. My guess is that it has something to do with installing their special
  167. MDEF for the fancy font menu.
  168.  
  169. It's still a kludge, but I use it myself.
  170.  
  171. pr
  172. --
  173. Pete Resnick             (...so what is a mojo, and why would one be rising?)
  174. Graduate assistant - Philosophy Department, Gregory Hall, UIUC
  175. System manager - Cognitive Science Group, Beckman Institute, UIUC
  176. Internet: resnick@cogsci.uiuc.edu
  177.  
  178.  
  179.  
  180. - -------------------------
  181.  
  182. From: buckeye@spf.trw.com (John Wallace)
  183. Subject:  System 7's pop-up CDEF - more lies (documentation errors)
  184. Date: 15 Feb 92 03:34:38 GMT
  185. Organization: TRW Data Systems Center, Redondo Beach, CA
  186.  
  187. In article <1992Feb14.142523.3174@ils.nwu.edu> engber@ils.nwu.edu (Mike Engber) writes:
  188. >
  189. >So how do they do it [change the font of popup menus --JW]?
  190. >
  191. > - My guess is what's going on is that it briefly changes two global
  192. >   vars, SysFontFam and SysFontSize, to trick the standard MDEF into
  193. >   using the font it wants.
  194. >
  195. > - I tried this out, and you have to change both vars to get it to work
  196. >   at all & for some reason, the setting of SysFontSize seems ignored (12
  197. >   is always used)
  198. >
  199. >Comments anyone? How evil a technique is this?
  200. >
  201.  
  202. This one drove me crazy.  But I finally got it.  You have to do three
  203. things:
  204.  
  205. 1. Set SysFontFam and SysFontSize to the appropriate values
  206.    (even though it ignores the font size)
  207.  
  208. 2. Set the window manager's font to the appropriate values since
  209.    the menu appears to be actually drawn in the window manager's
  210.    font,
  211.  
  212. 3. Set lastSpExtra to -1 so that the low memory font globals
  213.    are reloaded.
  214.  
  215. This should draw the menu in the desired font (if I remember
  216. correctly, my source code is at my other office).  I didn't test to
  217. see if I could do less such as just change SysFontFam and the window
  218. manager's font size, for example.
  219.  
  220. Hope this helps!
  221. John
  222.  
  223. - -
  224. John Wallace        buckeye@spf.trw.com
  225.  
  226.  
  227.  
  228. - -------------------------
  229.  
  230. From: oster@well.sf.ca.us (David Phillip Oster)
  231. Subject:  System 7's pop-up CDEF - more lies (documentation errors)
  232. Date: 17 Feb 92 05:52:42 GMT
  233. Organization: Whole Earth 'Lectronic Link, Sausalito, CA
  234.  
  235. I've used System 7's pop-up CDEF with useWFont, and it works exactly as
  236. documented, i.e., it works, provided i run it from a fairly fresh boot.
  237. If I run numerous other programs, something, I don't know what, mutates
  238. the system so my Geneva 9 menus still have Geneva 9 titles, but the
  239. menus themselves are drawn in Geneva 12.
  240. -- 
  241. -- David Phillip Oster - At least the government doesn't make death worse.
  242. -- oster@well.sf.ca.us = {backbone}!well!oster
  243.  
  244.  
  245.  
  246. - -------------------------
  247.  
  248. From: leonardr@ccs.itd.umich.edu
  249. Subject:  System 7's pop-up CDEF - more lies (documentation errors)
  250. Date: 17 Feb 92 21:19:26 GMT
  251. Organization: Campus Computing Sites, University of Michigan-Ann Arbor
  252.  
  253. In article <1992Feb14.142523.3174@ils.nwu.edu> engber@ils.nwu.edu (Mike Engber) writes:
  254. >
  255. >IM VI p. 3-18
  256. >
  257. > - The System 7 pop-up CDEF says the if you set useWFont, then the menu
  258. >   will appear in the current font and size. It does use the current
  259. >   font, but not the current size. The title and current item do use the
  260. >   current size.
  261. >
  262. > - To double check, I looked at a ComToolBox app (uATerm) and sure enough,
  263. >   those Geneva 9 pop-ups, pop into Geveva 12 menus.
  264. >
  265.     I bet that you were running Microsoft Word, weren't you?!?  I've
  266. got my own CDEF which does also does the font/size stuff (and more!) and
  267. discovered that if MSWord (4.0, at least) is running the size change does
  268. NOT take effect.
  269.  
  270. >So how do they do it?
  271. >
  272. > - My guess is what's going on is that it briefly changes two global
  273. >   vars, SysFontFam and SysFontSize, to trick the standard MDEF into
  274. >   using the font it wants.
  275. >
  276.     It actually mukcs about with a couple other LMGlobals in addition
  277. to FontFam and FontSize, in order to invalidate the Font Mngr's caches.  Mine
  278. does the same thing and you can see what the System's CDEF  does by doing a
  279. ResEdit Disasm on the DEF and looking at on e of the last routines in the
  280. code.
  281.  
  282. >Comments anyone? How evil a technique is this?
  283. >
  284.     I do the same thing that System does - if they can do it, so can I!
  285.  
  286. > You see, I'm still on my quest for a CDEF that implements type in pop
  287. > up menus as per IM VI. I got no response to my posting that pointed
  288. > out that IM VI falsely claims the standard pop-up CDEF will "readily"
  289. > do it.  So I'm writing my own.
  290. >
  291.     That's what you've got to do - it's what I did!
  292.  
  293. > I'm almost done, the one thing to figure out is how to support support
  294. > (or not) the useWFont var code. (and I know the real answer is to
  295. > write my own MDEF - but I can always point to Apple and say "monkey
  296. > see, monkey do."
  297. >
  298.     Here is the code that I use to "muck" with the appropriate LMG's
  299. to get teh font'size correct in my pops.  This should probably get put
  300. into the UMPG (Matt??).
  301.  
  302. void ChangeSystemFont(short fontNum, short fontSize)
  303. {
  304.  
  305.     if((SysFontFam == fontNum) && (SysFontSize == fontSize))
  306.     { /* don't make the system reload the font info unless it has to */
  307.         return;
  308.     }
  309.     
  310.     SysFontFam = fontNum;
  311.     SysFontSize = fontSize;
  312.     if (CurFMInput == 0)
  313.         CurFMInput = -1L;
  314. }
  315.  
  316. -- 
  317. - ---------------------------------------------------------------------
  318. Leonard Rosenthol          Internet: leonardr@ccs.itd.umich.edu
  319. Director of Advanced Technology   AppleLink: MACgician
  320. Aladdin Systems, inc.          GEnie:     MACgician
  321.  
  322.  
  323.  
  324. ---------------------------
  325.  
  326. From: greeny@top.cis.syr.edu (Jonathan Greenfield)
  327. Subject: Another note regarding 'odoc' conversion to "puppet strings"
  328. Date: 15 Feb 92 15:08:29 GMT
  329. Organization: CIS Dept., Syracuse University
  330.  
  331. Background: In previous posts, it was suggested that the need to await
  332. a reply (using the kAEWaitReply option) when posting 'odoc' events (for
  333. conversion to "puppet strings") was a normal function of the posting
  334. mechanism.  It was suggested that specifying the kAEWaitReply option
  335. was merely equivalent to allowing the AE to be posted by calling
  336. WaitNextEvent.
  337.  
  338. I responded that I could not accept that explanation, since it was not
  339. true for AE's in general, and not even for 'odoc' events (as long as no
  340. "puppet string" conversion is necessary).
  341.  
  342. After doing a few tests, I would like to add that the kAEQueueReply option
  343. does not work with "puppet string" conversion, and that specifying
  344. kAENoReply, but immediately following the AESend command with a WNE
  345. call also does *not* work.
  346.  
  347. So I think it's clear that the need to wait for a reply *is* related to
  348. the Process Manager's "puppet string" conversion, and *not* to the
  349. Event Manager's normal AE posting mechanism.
  350. --
  351. J. S. Greenfield                                         greeny@top.cis.syr.edu
  352. (I like to put 'greeny' here, 
  353. but my d*mn system wants a 
  354. *real* name!)                        "What's the difference between an orange?"
  355.  
  356.  
  357.  
  358. - -------------------------
  359.  
  360. From: grobbins@Apple.COM (Grobbins)
  361. Subject:  Another note regarding 'odoc' conversion to "puppet strings"
  362. Date: 16 Feb 92 23:26:09 GMT
  363. Organization: CTS, DTS, ETC
  364.  
  365. In article <1992Feb15.100829.1550@newstand.syr.edu> greeny@top.cis.syr.edu writes:
  366. >It was suggested that specifying the kAEWaitReply option was
  367. >merely equivalent to allowing the AE to be posted by calling WaitNextEvent.
  368. >I responded that I could not accept that explanation, since it was not
  369. >true for AE's in general, and not even for 'odoc' events (as long as no
  370. >"puppet string" conversion is necessary).
  371.  
  372. No, it _is_ true that events don't get sent until WaitNextEvent time.
  373. The exception is events sent by an application to itself.  This is
  374. easy to demonstrate; just call AESend and then immediately enter an 
  375. infinite loop.
  376.  
  377. >After doing a few tests, I would like to add that the kAEQueueReply option
  378. >does not work with "puppet string" conversion, and that specifying
  379. >kAENoReply, but immediately following the AESend command with a WNE
  380. >call also does *not* work.
  381. >So I think it's clear that the need to wait for a reply *is* related to
  382. >the Process Manager's "puppet string" conversion, and *not* to the
  383. >Event Manager's normal AE posting mechanism.
  384.  
  385. I might believe you if the code below which I just wrote to test this
  386. didn't work, but it does, so sorry, greeny.  The salient line is
  387.  
  388.   retCode := AESend(theAppleEvent, replyAppleEvent, kAENoReply,
  389.                     kAENormalPriority, kAEDefaultTimeout, NIL, NIL);
  390.  
  391. There are some subtle points involved in sending odoc's which will be
  392. coerced to puppet strings.  For example, the target app will have to be
  393. made the current application for the operation to succeed, so the sending
  394. app must accept its deactivate event and allow the immediate switch-out.
  395. Also, in my tests, the target has to be identified by PSN rather than by
  396. signature, though I don't know the why of that.
  397.  
  398. Replies are really nothing to get hung up over.
  399.  
  400. Grobbins               grobbins@apple.com
  401.  
  402. Usual disclaimers apply.
  403.  
  404. - -
  405.  
  406.  
  407.  PROCEDURE OpenDoc (itemFSSpecPtr: FSSpecPtr);
  408.   LABEL 1;  { exception destination }
  409.   CONST kTargetSignature = 'NISI'; { a System 6 application }
  410.   VAR
  411.    retCode: OSErr;
  412.    theAppleEvent, replyAppleEvent: AppleEvent;
  413.    odocAliasDescList, targetAddrDesc: AEDesc;
  414.    fileAliasHandle: AliasHandle;
  415.    tempStr: Str255;
  416.    tempPSN, targetPSN: ProcessSerialNumber;
  417.    tempPIR: ProcessInfoRec;
  418.    myEventRecord: EventRecord;
  419.    eventFlag: Boolean;
  420.    i: Integer;
  421.  BEGIN
  422.   fileAliasHandle := NIL;
  423.   targetAddrDesc.dataHandle := NIL;
  424.   theAppleEvent.dataHandle := NIL;
  425.  
  426.   tempPSN.highLongOfPSN := 0;
  427.   tempPSN.lowLongOfPSN := kNoProcess;
  428.   targetPSN := tempPSN;
  429.  
  430.   tempPIR.processInfoLength := SizeOf(ProcessInfoRec);
  431.   tempPIR.processName := @tempStr;
  432.   tempPIR.processAppSpec := NIL;
  433.  
  434.   { target the application }
  435.   WHILE GetNextProcess(tempPSN) = noErr DO
  436.     IF GetProcessInformation(tempPSN, tempPIR) = noErr THEN
  437.      IF tempPIR.processSignature = kTargetSignature THEN
  438.       targetPSN := tempPSN;
  439.  
  440.   IF targetPSN.lowLongOfPSN = kNoProcess THEN GOTO 1;
  441.  
  442.   retCode := AECreateDesc(typeProcessSerialNumber, @targetPSN, SizeOf(targetPSN), targetAddrDesc);
  443.   IF retCode <> noErr THEN GOTO 1;
  444.  
  445.   { create the event }
  446.   retCode := AECreateAppleEvent(kCoreEventClass, kAEOpenDocuments, targetAddrDesc, kAutoGenerateReturnID, kAnyTransactionID, theAppleEvent);
  447.   IF retCode <> noErr THEN GOTO 1;
  448.  
  449.   { create a list containing an alias to a file }
  450.   retCode := NewAlias(NIL, itemFSSpecPtr^, fileAliasHandle);
  451.   IF retCode <> noErr THEN GOTO 1;
  452.  
  453.   retCode := AECreateList(NIL, 0, false, odocAliasDescList);
  454.   IF retCode <> noErr THEN GOTO 1;
  455.  
  456.   HLock(Handle(fileAliasHandle));
  457.   retCode := AEPutPtr(odocAliasDescList, 1, typeAlias, Pointer(fileAliasHandle^), fileAliasHandle^^.aliasSize);
  458.   IF retCode <> noErr THEN GOTO 1;
  459.   HUnlock(Handle(fileAliasHandle));
  460.  
  461.   { make the list the direct object of the apple event and send it }
  462.   retCode := AEPutParamDesc(theAppleEvent, keyDirectObject, odocAliasDescList);
  463.   IF retCode <> noErr THEN GOTO 1;
  464.  
  465.   retCode := AESend(theAppleEvent, replyAppleEvent, kAENoReply, kAENormalPriority, kAEDefaultTimeout, NIL, NIL);
  466.   IF retCode <> noErr THEN GOTO 1;
  467.  
  468.   SysBeep(10);
  469.   eventFlag := WaitNextEvent(everyEvent, myEventRecord, 30, NIL);
  470.   eventFlag := WaitNextEvent(everyEvent, myEventRecord, 30, NIL);
  471.   eventFlag := WaitNextEvent(everyEvent, myEventRecord, 30, NIL);
  472.   SysBeep(10);
  473.  
  474. 1:
  475.   IF retCode <> noErr THEN
  476.    BEGIN
  477.     NumToString(retCode, tempStr);
  478.     DebugStr(Concat('Error:', tempStr));
  479.    END;
  480.   IF targetAddrDesc.dataHandle <> NIL THEN
  481.    retCode := AEDisposeDesc(targetAddrDesc);
  482.   IF odocAliasDescList.dataHandle <> NIL THEN
  483.    retCode := AEDisposeDesc(odocAliasDescList);
  484.   IF theAppleEvent.dataHandle <> NIL THEN
  485.    retCode := AEDisposeDesc(theAppleEvent);
  486.   IF fileAliasHandle <> NIL THEN
  487.    DisposHandle(Handle(fileAliasHandle));
  488.  END;
  489.  
  490.  
  491.  
  492.  
  493. - -------------------------
  494.  
  495. From: greeny@top.cis.syr.edu (Jonathan Greenfield)
  496. Subject:  Another note regarding 'odoc' conversion to "puppet strings"
  497. Organization: CIS Dept., Syracuse University
  498. Date: Mon, 17 Feb 92 10:08:16 EST
  499.  
  500. In article <62859@apple.Apple.COM> grobbins@Apple.COM (Grobbins) writes:
  501. >>It was suggested that specifying the kAEWaitReply option was
  502. >>merely equivalent to allowing the AE to be posted by calling WaitNextEvent.
  503. >>I responded that I could not accept that explanation, since it was not
  504. >>true for AE's in general, and not even for 'odoc' events (as long as no
  505. >>"puppet string" conversion is necessary).
  506. >
  507. >No, it _is_ true that events don't get sent until WaitNextEvent time.
  508. >The exception is events sent by an application to itself.  This is
  509. >easy to demonstrate; just call AESend and then immediately enter an 
  510. >infinite loop.
  511.  
  512. Let's not play games--if you read my post you will see that I said nothing
  513. to indicate that events got sent before WNE time.  What I said is that
  514. the kAEWaitReply option DOES NOT SEEM TO BE EQUIVALENT TO a call to WNE,
  515. as you suggested.  It is entirely possible that kAEWaitReply invokes a
  516. call to WNE, but as I have indicated previously, it seems to do *more*
  517. than just that.
  518.  
  519. >>After doing a few tests, I would like to add that the kAEQueueReply option
  520. >>does not work with "puppet string" conversion, and that specifying
  521. >>kAENoReply, but immediately following the AESend command with a WNE
  522. >>call also does *not* work.
  523. >>So I think it's clear that the need to wait for a reply *is* related to
  524. >>the Process Manager's "puppet string" conversion, and *not* to the
  525. >>Event Manager's normal AE posting mechanism.
  526. >
  527. >I might believe you if the code below which I just wrote to test this
  528. >didn't work, but it does, so sorry, greeny.  The salient line is
  529.  
  530. You are really being obnoxious.  How about posting, "Well, I was able
  531. to get puppet-string conversion without awaiting a reply in the
  532. following *case*, so it doesn't seem that one *always* has to await a
  533. reply."
  534.  
  535. How about trying to determine whether I have done something strange, that
  536. might explain the behavior I describe?
  537.  
  538. But no, you feel obliged to presume that if it *happened* to work for
  539. you in *one* case, then it must *always* work that way, even if some other
  540. crazy (stupid? lying??) person has suggested otherwise.  Gee, I don't
  541. work for Apple (and I certainly make no claim to be a Mac expert), so that
  542. means that the information that present should simply be ignored.
  543.  
  544. >  retCode := AESend(theAppleEvent, replyAppleEvent, kAENoReply,
  545. >                    kAENormalPriority, kAEDefaultTimeout, NIL, NIL);
  546. >
  547. >There are some subtle points involved in sending odoc's which will be
  548. >coerced to puppet strings. 
  549.  
  550. Really?!!  Gee, I thought that was the whole point of my posts, in the first
  551. place.  To point out some peculiar (and apparently undocumented) behavior
  552. when attempting to convert 'odoc' events to puppet-strings.
  553.  
  554. I am aware of one "snippet" that mentioned puppet-string conversion.  It
  555. made the conversion sound as though it was completely transparent to the
  556. application programmer.  This is not the case.  It would be nice to have
  557. Apple provide some documentation that more clearly describes what is necessary 
  558. for puppet string conversion.  Next best is to exchange information among
  559. ourselves, so that we can try to figure out what is happening, on our own.
  560.  
  561. Your original response suggested that the peculiar behavior was attributable
  562. to sending apple events in general.  When I responded that such an explanation
  563. did not fit the behavior that I observed, you write back, "Ho ho ho, there
  564. are some subtle points involved..."
  565.  
  566. Very helpful.
  567.  
  568. >For example, the target app will have to be
  569. >made the current application for the operation to succeed, so the sending
  570. >app must accept its deactivate event and allow the immediate switch-out.
  571. >Also, in my tests, the target has to be identified by PSN rather than by
  572. >signature, though I don't know the why of that.
  573.  
  574. I do specify the target address by PSN.  And what does a call to WNE do,
  575. if it doesn't give up the processor to allow another application to
  576. become the current application. 
  577.  
  578. So these ad-hoc suggestions do not convince me.
  579.  
  580. I even tried forcing the target app into the foreground before sending
  581. the event.  Strangely enough, the puppet-string conversion didn't work
  582. then, even when the kAEWaitReply option was specified!
  583.  
  584. Now why should an app being in the foreground *prevent* the puppet
  585. string conversion from occurring.  (It doesn't prevent events from
  586. being sent, in general--that is, HLE-aware apps can get a normal 'odoc'
  587. without trouble, while they are in the foreground.)  That's pretty strange
  588. behavior, in my book.
  589.  
  590. >Replies are really nothing to get hung up over.
  591.  
  592. If you are just guessing as to what works, and what doesn't, then why
  593. don't you just contribute your observations in a constructive manner,
  594. rather than suggesting, in a know-it-all Mac-programming-net-god tone,
  595. that your observations are the gospel truth.
  596.  
  597. It seems pretty clear to me that your knowledge of these matters is
  598. limited to your own ad hoc observations.
  599.  
  600. There's nothing wrong with that--but don't try to mislead the rest of
  601. us by pretending to have authoritative information.
  602.  
  603. And you certainly don't have to be rude and obnoxious.
  604.  
  605. - ------------------------
  606.  
  607. Here's the code segment that I use to create and send the 'odoc' event.
  608. I'll be glad if someone would like to constructively point out some problem
  609. in the process.  I have no interest in hearing from individuals who are 
  610. interested in summarily dismissing my observations without taking any time
  611. to understand the matter.
  612.  
  613.  
  614. err := AECreateDesc(typeProcessSerialNumber, @applPSN, Sizeof(applPSN),
  615.                     applAddress);
  616. err := AECreateAppleEvent(kCoreEventClass, kAEOpenDocuments, applAddress,
  617.                           kAutoGenerateReturnID, kAnyTransactionID,
  618.                           theAppleEvent);
  619. err := AEPutParamDesc(theAppleEvent, keyDirectObject, docList);
  620. err := AESend(theAppleEvent, dummyReply, kAEWaitReply + kAECanInteract +
  621.               kAECanSwitchLayer, kAEHighPriority, 30, nil, nil);
  622.  
  623.  
  624. This code segment works fine for both AE-aware and non-AE-aware apps.
  625. Change the kAEWaitReply to kAENoReply (and follow the segment with a
  626. call to WNE), however, and the segment will only work for AE-aware apps.
  627. (In other words, the puppet string conversion won't work.)
  628.  
  629. (Note: the timeout is set to 30, simply because some applications do
  630. not generate a reply--therefore hanging my application until the timeout
  631. is reached.  I have found that 30 ticks is sufficient for apps to
  632. receive the 'odoc' event.  In any case, all of my tests were originally
  633. performed with the kAEDefaultTimeout constant specified.)
  634.  
  635. So any thoughts?  (from people who are interested in finding out how
  636. puppet-string conversion works--not from people who are simply interested
  637. in touting their own imagined abilities as a mac.guru)
  638. --
  639. J. S. Greenfield                                         greeny@top.cis.syr.edu
  640. (I like to put 'greeny' here, 
  641. but my d*mn system wants a 
  642. *real* name!)                        "What's the difference between an orange?"
  643.  
  644.  
  645.  
  646. - -------------------------
  647.  
  648. From: ksand@apple.com (Kent Sandvik)
  649. Subject:  Another note regarding 'odoc' conversion to "puppet strings"
  650. Date: 20 Feb 92 05:26:12 GMT
  651. Organization: MacDTS Mongols
  652.  
  653. In article <1992Feb17.100816.2398@newstand.syr.edu>, greeny@top.cis.syr.edu (Jonathan Greenfield) writes:
  654. > In article <62859@apple.Apple.COM> grobbins@Apple.COM (Grobbins) writes:
  655. > Really?!!  Gee, I thought that was the whole point of my posts, in the first
  656. > place.  To point out some peculiar (and apparently undocumented) behavior
  657. > when attempting to convert 'odoc' events to puppet-strings.
  658. > I am aware of one "snippet" that mentioned puppet-string conversion.  It
  659. > made the conversion sound as though it was completely transparent to the
  660. > application programmer.  This is not the case.  It would be nice to have
  661. > Apple provide some documentation that more clearly describes what is necessary 
  662. > for puppet string conversion.  Next best is to exchange information among
  663. > ourselves, so that we can try to figure out what is happening, on our own.
  664.  
  665. I'm no expert with AEs, no way. However I would like to point out that 
  666. sometimes we don't provide information in the best interest of the developer 
  667. community. Usually we don't want to document issues which are hacky, 
  668. dirty, and most likely subject to change.
  669.  
  670. If as you say "we can try to figure out what is happening, on our own" 
  671. is the preferred way, you must realize the dangers with trying to use 
  672. undocumented and skanky issues which might break the code in the long run.
  673.  
  674. This is the reason mythological things such as MF 'puppet strings', the
  675. infamous Layer Manager, and many other things are not considered to be 
  676. documented. We are not trying to make life hard for the developers, quite
  677. the opposite! It's hard to explain this thing, but I think each one knows
  678. the intent behind this 'secrecy'. It's not that we would like to keep all
  679. the secrets for our own internal hacking use. In general any Macintosh
  680. program which *will work* for the end user is a good thing. Note that 
  681. I stressed "will work".
  682.  
  683. Then if certain features are not available, it is the job of DTS to at least
  684. find workarounds, and that's one of our missions.
  685.  
  686. Finally, I don't know, maybe I'm getting old, but I don't consider official
  687. flaming to be very constructive in programmer newsgroups. I think Greg is 
  688. doing a fine job over here, and as many of you have seen he's helping developers
  689. in this newsgroup - an activity which is beyond his job responsibilities, and
  690. he could as well work overtime with internal projects...
  691.  
  692. If we start flaming each other, it just leads to a situation where someone who
  693. provides free support will stop doing it, and that's not a good thing for anyone.
  694.  
  695. If anyone wants to flame me, please send an email to ksand@apple.com before
  696. this Friday afternoon, then this boy is heading off to sunny Florida!
  697.  
  698. Kent Sandvik
  699. not speaking for DTS / Dynamic Languge Evangelist
  700.  
  701.  
  702.  
  703. ---------------------------
  704.  
  705. From: rps32513@uxa.cso.uiuc.edu (Ronald P. Smith)
  706. Subject: implementing preference files
  707. Organization: University of Illinois at Urbana
  708. Date: Mon, 17 Feb 1992 05:40:04 GMT
  709.  
  710. I am working on a piece of software which will be distributed on
  711. CD-ROM.  I have to save information as to the user's preferences
  712. somewhere.  I normally would save this on the application's rescources,
  713. but since this will be on CD-ROM, I can't.  I am having problems
  714. implementing a preference file.  I want to be able to have a preferences
  715. file somewhere, and have my program look in the most likely places for it
  716.  (root, system folder, current dir), and if not found.. go looking for it.
  717.  
  718. I was wondering what most people do to handle preference files?
  719.  
  720. Do you allow the user to place the file anywhere, and go looking for
  721. it using some search algorithm using param block based file routines
  722. (I hope not!).  I suppose I could do this, but it seems there should
  723. be a better way.. Any input would be greatly appreciated..
  724.  
  725. Ron Smith (rps32513@uxa.cso.uiuc.edu)
  726.  
  727.  
  728.  
  729. - -------------------------
  730.  
  731. From: wwg2101@venus.tamu.edu (GILPIN, W.W.)
  732. Subject:  implementing preference files
  733. Date: 17 Feb 92 09:01:00 GMT
  734. Organization: Texas A&M University, Academic Computing Services
  735.  
  736. >I was wondering what most people do to handle preference files?
  737. >Do you allow the user to place the file anywhere, and go looking for
  738. >it using some search algorithm using param block based file routines
  739. >(I hope not!).  I suppose I could do this, but it seems there should
  740. >be a better way.. Any input would be greatly appreciated..
  741.  
  742. Dear God NO! The standard way to implement preferences files is to put them
  743. in a folder named Preferences in the System Folder. (Find the system folder
  744. with SysEnvirons or Gestalt). That's the easiest way.
  745.  
  746. Wes Gilpin
  747. WWG2101@ZEUS.TAMU.EDU
  748. WWG2101@TAMZEUS
  749.  
  750.  
  751.  
  752. - -------------------------
  753.  
  754. From: kkk@tdb.uu.se (Karl-Koenig Koenigsson)
  755. Subject:  implementing preference files
  756. Date: 17 Feb 92 13:10:15 GMT
  757. Organization: Dept. of Scientific Computing, Uppsala Univ.
  758.  
  759. wwg2101@venus.tamu.edu (GILPIN, W.W.) writes:
  760. : Dear God NO! The standard way to implement preferences files is to put them
  761. : in a folder named Preferences in the System Folder. (Find the system folder
  762. : with SysEnvirons or Gestalt). That's the easiest way.
  763.  
  764. Or better still: system 7 has a feature callde FindFolder (I believe)
  765. which returns the IDs of predefined folders such as the preferences
  766. folder, or the extenxion folder, etc.
  767.  
  768. The problem with running american software on a (in my case) swedish
  769. mac, is that some software is not properly written, and I end up with
  770. an extra folder inside my system folder.
  771.  
  772. Cheers
  773.  
  774.     koenig
  775.  
  776.  
  777. -- 
  778. Karl-Koenig Koenigsson, Computer consultant
  779. kkk@tdb.uu.se                   "No matter wherever you go, there you are"
  780.  
  781.  
  782.  
  783. - -------------------------
  784.  
  785. From: wwg2101@zeus.tamu.edu (GILPIN, W.W)
  786. Subject:  implementing preference files
  787. Date: 18 Feb 92 01:07:00 GMT
  788. Organization: Texas A&M University, Academic Computing Services
  789.  
  790. >wwg2101@venus.tamu.edu (GILPIN, W.W.) writes:
  791. >: Dear God NO! The standard way to implement preferences files is to put them
  792. >: in a folder named Preferences in the System Folder. (Find the system folder
  793. >: with SysEnvirons or Gestalt). That's the easiest way.
  794. >Or better still: system 7 has a feature callde FindFolder (I believe)
  795. >which returns the IDs of predefined folders such as the preferences
  796. >folder, or the extenxion folder, etc.
  797.  
  798. This is indeed a System 7.0.x function that I overlooked. To use this you need
  799. to determine if Gestalt is available, then use Gestalt to determine if 
  800. FindFolder is available. (CONST FindFolderPresent = 0;) Then pass Findfolder
  801. the code 'pref'. This only works with 7.0, however. If you're using 6.0.x, 
  802. you can either do like Stuffit Deluxe did and use a Preferences folder in
  803. the system folder, or you can do like just about every other 6.0.x program
  804. does and just drop your pref's file in the system folder. The first method is
  805. probably not too advisable. Just make sure that you take into account the 
  806. possibility of 6.0.x OR 7.0.x
  807.  
  808. >The problem with running american software on a (in my case) swedish
  809. >mac, is that some software is not properly written, and I end up with
  810. >an extra folder inside my system folder.
  811.  
  812. Got me there too. I have no excuse.
  813.  
  814. Wes Gilpin
  815. WWG2101@TAMZEUS
  816. WWG2101@ZEUS.TAMU.EDU
  817.  
  818.  
  819.  
  820. - -------------------------
  821.  
  822. From: d88-jwa@hemul.nada.kth.se (Jon W{tte)
  823. Subject:  implementing preference files
  824. Date: 18 Feb 92 09:05:05 GMT
  825. Organization: Royal Institute of Technology, Stockholm, Sweden
  826.  
  827. > wwg2101@zeus.tamu.edu (GILPIN, W.W) writes:
  828.  
  829.    This is indeed a System 7.0.x function that I overlooked. To use this you need
  830.    to determine if Gestalt is available, then use Gestalt to determine if 
  831.    FindFolder is available. (CONST FindFolderPresent = 0;) Then pass Findfolder
  832.  
  833. You don't have to check for _Gestalt, the Gestalt glue does that
  834. automagically. Just call Gestalt, and you'll get an error result
  835. code back if it's not there.
  836.  
  837. --
  838. This Signature is distributed under the conditions of the Signature License,
  839. available at a fee from   h+@nada.kth.se  (Jon W{tte)  Reading the Signature
  840. implies that you accept to be bound by the terms in said License. Should you
  841. not agree on any of these terms, you must return the Signature unread to me.
  842.  
  843.  
  844.  
  845. - -------------------------
  846.  
  847. From: d88-cbr@dront.nada.kth.se (Christian Beijner)
  848. Subject:  implementing preference files
  849. Date: 18 Feb 92 09:33:36 GMT
  850. Organization: Royal Institute of Technology, Stockholm, Sweden
  851.  
  852. In article <17FEB199204013387@venus.tamu.edu> wwg2101@venus.tamu.edu (GILPIN, W.W.) writes:
  853. >>I was wondering what most people do to handle preference files?
  854. >> 
  855. >>Do you allow the user to place the file anywhere, and go looking for
  856. >>it using some search algorithm using param block based file routines
  857. >>(I hope not!).  I suppose I could do this, but it seems there should
  858. >>be a better way.. Any input would be greatly appreciated..
  859. >
  860. >Dear God NO! The standard way to implement preferences files is to put them
  861. >in a folder named Preferences in the System Folder. (Find the system folder
  862. >with SysEnvirons or Gestalt). That's the easiest way.
  863.  
  864. Another way is using the curresfile (= your applicationfile before opening any
  865. others) to find out where your application is (cant remember exact way) 
  866. and use the folder where the application is to store your prefs.
  867. This has several advantages:
  868.   1) Doesn't clog up the system folder
  869.   2) If the user erases your program he probably erases the prefs file also,
  870.      which isnt neccessarily so if it is somewhere in the system folder.
  871.   3) Usable on system 6.x.x
  872. /Chris
  873.  
  874.  
  875.  
  876. - -------------------------
  877.  
  878. From: neeri@iis.ethz.ch (Matthias Ulrich Neeracher)
  879. Subject:  implementing preference files
  880. Date: 18 Feb 92 18:56:41 GMT
  881. Organization: Integrated Systems Laboratory, ETH, Zurich
  882.  
  883. In article <17FEB199220071742@zeus.tamu.edu> wwg2101@zeus.tamu.edu (GILPIN, W.W) writes:
  884. >>wwg2101@venus.tamu.edu (GILPIN, W.W.) writes:
  885. >>: Dear God NO! The standard way to implement preferences files is to put them
  886. >>: in a folder named Preferences in the System Folder. (Find the system folder
  887. >>: with SysEnvirons or Gestalt). That's the easiest way.
  888. >> 
  889. >>Or better still: system 7 has a feature callde FindFolder (I believe)
  890. >>which returns the IDs of predefined folders such as the preferences
  891. >>folder, or the extenxion folder, etc.
  892. >
  893. >This is indeed a System 7.0.x function that I overlooked. To use this you need
  894. >to determine if Gestalt is available, then use Gestalt to determine if 
  895. >FindFolder is available. (CONST FindFolderPresent = 0;) Then pass Findfolder
  896. >the code 'pref'. This only works with 7.0, however. If you're using 6.0.x, 
  897. >you can either do like Stuffit Deluxe did and use a Preferences folder in
  898. >the system folder, or you can do like just about every other 6.0.x program
  899. >does and just drop your pref's file in the system folder. The first method is
  900. >probably not too advisable. Just make sure that you take into account the 
  901. >possibility of 6.0.x OR 7.0.x
  902.  
  903. Actually, MPW has glue for FindFolder which automatically returns the System
  904. Folder if you ask for the Preferences folder under 6.0.x
  905.  
  906. Matthias
  907.  
  908. - ---
  909. Matthias Neeracher                                   neeri@iis.ethz.ch
  910.  "You must have picked up that copy of Scarlett instead of Inside Mac
  911.   when you tried to find the right call..." -- Keith Rollin
  912.  
  913.  
  914.  
  915. - -------------------------
  916.  
  917. From: CXT105@psuvm.psu.edu (Christopher Tate)
  918. Subject:  implementing preference files
  919. Date: 18 Feb 92 13:14:17 GMT
  920. Organization: Penn State University
  921.  
  922. In article <1992Feb18.093336.1877@kth.se>, d88-cbr@dront.nada.kth.se (Christian
  923. Beijner) says:
  924. >
  925. >Another way is using the curresfile (= your applicationfile before opening any
  926. >others) to find out where your application is (cant remember exact way)
  927. >and use the folder where the application is to store your prefs.
  928. >This has several advantages:
  929. >  1) Doesn't clog up the system folder
  930. >  2) If the user erases your program he probably erases the prefs file also,
  931. >     which isnt neccessarily so if it is somewhere in the system folder.
  932. >  3) Usable on system 6.x.x
  933.  
  934. Ack!  Don't do this!  It has the following additional feature:
  935.  
  936.    4) Causes your application to break when installed on a read-only
  937.       file server.
  938.  
  939. Ready,Set,Go 4.5 insists on using its folder for temp files or some such,
  940. and so LetraSet lost a *lot* of potential business from PSU -- we can't
  941. use it in our labs, so we didn't buy it....
  942.  
  943. Also, if you go back and read the original poster's question, his main
  944. problem is that his app will be distributed on CD-ROM -- another case
  945. of simply not being able to write to the volume holding the app.  Yet
  946. a third case is running off of a locked floppy (which many people prefer
  947. to do these days, what with viruses floating about and such).
  948.  
  949. - -----
  950. Christopher Tate     | Cryptogram #23:
  951. cxt105@psuvm.psu.edu |
  952. CXT105@PSUVM.BITNET  |   QNLF U MFLGX YR OIULFXD, CNLR CWIF CNLUI AGSMD.
  953. - -------------------|
  954. Send me the answer!  |
  955.  
  956.  
  957.  
  958. - -------------------------
  959.  
  960. From: d88-jwa@hemul.nada.kth.se (Jon W{tte)
  961. Subject:  implementing preference files
  962. Date: 18 Feb 92 16:05:12 GMT
  963. Organization: Royal Institute of Technology, Stockholm, Sweden
  964.  
  965. .se> d88-cbr@dront.nada.kth.se (Christian Beijner) writes:
  966.  
  967.    Another way is using the curresfile (= your applicationfile before opening any
  968.    others) to find out where your application is (cant remember exact way) 
  969.    and use the folder where the application is to store your prefs.
  970.    This has several advantages:
  971.      1) Doesn't clog up the system folder
  972.      2) If the user erases your program he probably erases the prefs file also,
  973.     which isnt neccessarily so if it is somewhere in the system folder.
  974.      3) Usable on system 6.x.x
  975.    /Chris
  976.  
  977.  
  978. It also has these DISadvantages:
  979.  
  980.     1) Fails miserably when stored on locked floppy
  981.     2) Fails miserably when stored on CD ROM
  982.     3) Fails miserably when stored on file server (so several
  983.        users can launch it simultaneously)
  984.     4) Fails miserably when users keep a lot of apps in one
  985.        folder for easy access
  986.     5) Fails miserably when ...
  987.  
  988. --
  989. This Signature is distributed under the conditions of the Signature License,
  990. available at a fee from   h+@nada.kth.se  (Jon W{tte)  Reading the Signature
  991. implies that you accept to be bound by the terms in said License. Should you
  992. not agree on any of these terms, you must return the Signature unread to me.
  993.  
  994.  
  995.  
  996. - -------------------------
  997.  
  998. From: wwg2101@rigel.tamu.edu (GILPIN, W.W.)
  999. Subject:  implementing preference files
  1000. Date: 18 Feb 92 22:39:00 GMT
  1001. Organization: Texas A&M University, Academic Computing Services
  1002.  
  1003. >Another way is using the curresfile (= your applicationfile before opening any
  1004. >others) to find out where your application is (cant remember exact way) 
  1005. >and use the folder where the application is to store your prefs.
  1006. >This has several advantages:
  1007.  
  1008. Disadvantage: You can't do this on a read-only disk. I think that was his 
  1009. original question, hence the discussion.
  1010.  
  1011. Wes Gilpin
  1012. WWG2101@TAMZEUS
  1013.  
  1014.  
  1015.  
  1016. - -------------------------
  1017.  
  1018. From: pathak@mitre.org (Heeren Pathak)
  1019. Subject:  implementing preference files
  1020. Organization: Mitre Corporation
  1021. Date: Wed, 19 Feb 1992 12:38:37 GMT
  1022.  
  1023. In article <1992Feb18.093336.1877@kth.se>, d88-cbr@dront.nada.kth.se (Christian Beijner) writes:
  1024. > Another way is using the curresfile (= your applicationfile before opening any
  1025. > others) to find out where your application is (cant remember exact way) 
  1026. > and use the folder where the application is to store your prefs.
  1027. > This has several advantages:
  1028. >   1) Doesn't clog up the system folder
  1029. >   2) If the user erases your program he probably erases the prefs file also,
  1030. >      which isnt neccessarily so if it is somewhere in the system folder.
  1031. >   3) Usable on system 6.x.x
  1032. > /Chris
  1033.  
  1034. The only problem with this is that it fails horribly if the user is 
  1035. running the application off of a file server and they only have read
  1036. access.
  1037.  
  1038. --Heeren
  1039.  
  1040.  
  1041.  
  1042. - -------------------------
  1043.  
  1044. From: kkk@tdb.uu.se (Karl-Koenig Koenigsson)
  1045. Subject:  implementing preference files
  1046. Date: 20 Feb 92 00:19:53 GMT
  1047. Organization: Dept. of Scientific Computing, Uppsala Univ., Sweden
  1048.  
  1049. In article <1992Feb17.131015.2924@tdb.uu.se> I wrote:
  1050. >The problem with running american software on a (in my case) swedish
  1051. >mac, is that some software is not properly written, and I end up with
  1052. >an extra folder inside my system folder.
  1053.  
  1054. I got some response to what I considered "properly written" and
  1055. thought I should clarify this a bit:
  1056.  
  1057. The problem with implementing a "Preferences" folder is that you are
  1058. on your own -- that is not a good idea.
  1059.  
  1060. What I think are good manners in a non system 7 environment are (in order
  1061. of preference):
  1062.  
  1063. -    Let the user choose a folder were to store the pref file (and
  1064.     maybe even name it) and    save the FileID in the application (*)
  1065. -    Save the prefs in the application (*)
  1066. -    Store the prefs as a file in the system folder (**)
  1067.  
  1068. The problem with (*) is that if you run you application from a read
  1069. only medium, you will run into trouble, and the problem with (**) is
  1070. that you will clutter your system folder.
  1071.  
  1072. The name of the system folder has always been translated and system
  1073. versions before 7.0 were designed to keep things in the system folder
  1074. (consider PostScript fonts for downloading to a printer or
  1075. INITS/cdevs).  Although this solution was not a nice one it was a
  1076. consistent way of doing things, and most applications conformed to
  1077. this standard.
  1078.  
  1079. I am maybe more grumpy than most people regarding this issue. The
  1080. problem is that being in a profession where all the new terminology
  1081. and all the new concepts are coming from the English language, you
  1082. find your own being slowly replaced. The Swedish computer
  1083. professionals of today are making their own language, merging Swedish
  1084. suffices with English words, creating a hideous mess...
  1085.  
  1086. This makes the problem of getting "ordinary people" to accept
  1087. computers a difficult one. They tend to look on those who work with
  1088. computers with awe, suspicion and fear, since they deal with machines,
  1089. and speak a language, noone understands. It is therefore a very
  1090. important task to make the language of computers an understandable
  1091. one.
  1092.  
  1093. So, to conclude: If you want to make your applications runable from
  1094. read only media, keep the prefs in the system folder. Otherwise let
  1095. the user choose. The only exception would be if you keep a lot of
  1096. files, like Aldus or Claris, where a dedicated folder with the
  1097. name of the program or the company is acceptable.
  1098.  
  1099. Cheers
  1100.  
  1101.     koenig
  1102.  
  1103.  
  1104.  
  1105.  
  1106. -- 
  1107. Karl-Koenig Koenigsson, Computer consultant
  1108. kkk@tdb.uu.se                   "No matter wherever you go, there you are"
  1109.  
  1110.  
  1111.  
  1112. ---------------------------
  1113.  
  1114. End of C.S.M.P. Digest
  1115. **********************
  1116.